import FileSaver from './FileSaver.min';
import XLSX from './xlsx.core.min';
export let format=(fmt)=> {  //根据类型返回当前时间
    const date = new Date()
    const o = {
        "Y+": date.getFullYear(),
        "M+": date.getMonth() + 1,     // 月
        "D+": date.getDate(),          // 日
        "h+": date.getHours(),         // 时
        "m+": date.getMinutes(),       // 分
        "s+": date.getSeconds(),       // 秒
        "W": date.getDay()             // 周
    }
    for (var k in o) {
    if (new RegExp("("+ k +")").test(fmt)) {
            fmt = fmt.replace(RegExp.$1, () => {
                if (k === 'W') {                                    // 星期几
                    const week = ['日', '一', '二', '三', '四', '五', '六']
                    return week[o[k]]
                } else if (k === 'Y+' || RegExp.$1.length == 1) {    // 年份 or 小于10不加0
                    return o[k]
                } else {
                    return ("00"+ o[k]).substr(("" + o[k]).length)  // 小于10补位0
                }
            })
        }
    }
    return fmt
}
export let beforeTime = (timestemp = 1700000000000) => {
    if (timestemp.includes('-') || timestemp.includes('/')) {
        timestemp = new Date(timestemp).getTime()
    }
    const minute = 1000 * 60;
    const hour = minute * 60;
    const day = hour * 24;
    const month = day * 30;
    const year = month * 12;
    const diffValue = new Date().getTime() - timestemp; // 当前时间戳-原时间戳=相差时间

    // 如果本地时间小于变量时间
    if (diffValue <= 0) {
        return '现在'
    }

    // 计算差异时间的量级
    const yearC = diffValue / year;
    const monthC = diffValue / month;
    const weekC = diffValue / (7 * day);
    const dayC = diffValue / day;
    const hourC = diffValue / hour;
    const minC = diffValue / minute;

    // 从大到小排序 满足1以上即成立
    const map = {
        [yearC]: '年',
        [monthC]: "月",
        [weekC]: "周",
        [dayC]: "天",
        [hourC]: "小时",
        [minC]: "分钟",
    }
    for (let i in map) {
        if (i >= 1) {
            return `${parseInt(i)}${map[i]}前`
        }
    }
}

export let verificationCode = (strCode = '')=> {
    var pool = 'ABCDEFGHIGKLMNOPQRSTUVWXYZ1234567890'
    //	随机数生成函数
    function rn(min, max) {
        return parseInt(Math.random()*(max-min)+min)
    }
    //  随机字符串
    if (!strCode) {
        //	取出随机的字母或数字
        for(var i=0; i<4; i++) {
            var c = pool[rn(0,pool.length)]
            strCode+=c
        }
    }
    //	随机生成颜色的函数
    function rc(min, max) {
        var r = rn(min, max)
        var g = rn(min, max)
        var b = rn(min, max)
        var str = 'rgb('+ r +", "+ g +', '+ b +")"
        return str
    }
    var w = 120
    var h = 30
    var canvas = document.querySelector('#canvas')
    var ctx = canvas.getContext('2d')
    // 在canvas上绘制背景颜色
    ctx.fillStyle = rc(180,230)
    ctx.fillRect(0,0,w,h)

    //  随机字符串
    for(var i=0; i<4; i++) {

    // 	随机出字体大小
        var fs = rn(14,30)
        // 随机字符旋转角度
        var deg = rn (-30, 30)
        ctx.font = fs+'px Simhei'
        ctx.textBaseline = 'top'
        // 设置字体填充颜色
        ctx.fillStyle = rc(80, 150)
        ctx.save()
        ctx.translate(30*i+15,15)
        ctx.rotate(deg*Math.PI/180)
        ctx.fillText(strCode[i], -10, -10)
        ctx.restore()
    }

    // 随机生成5条干扰线
    for(var i=0; i<5; i++) {
        ctx.beginPath()
        ctx.moveTo(rn(0,w), rn(0,h))
        ctx.lineTo(rn(0,w), rn(0,h))
        ctx.strokeStyle = rc(180,230)
        ctx.closePath()
        ctx.stroke()
    }
    // 随机生成40个干扰点
    for(var i=0; i<40; i++) {
        ctx.beginPath()
        ctx.arc(rn(0,w),rn(0,h),1,0,2*Math.PI)
        ctx.closePath()
        ctx.fillStyle = rc(150,200)
        ctx.fill()
    }
    return  strCode
}
// 防抖函数
export function debounce(func, delay) {
    let timer;
    return function() {
        clearTimeout(timer);
        timer = setTimeout(() => {
            func.apply(this, arguments);
        }, delay);
    };
}

// 使用示例
let debouncedFunction = debounce(function() {
    console.log("这是一个防抖函数");
}, 1000);




export function downloadExcel(id, fileName) {
    console.log(id, fileName,'id, fileName');
    /* 从表生成工作簿对象 */
    var wb = XLSX.utils.table_to_book(document.querySelector(`#${id}`));

    /* 获取二进制字符串作为输出 */
    var wbout = XLSX.write(wb, {
        bookType: 'xlsx',
        bookSST: true,
        type: 'array',
    });

    try {
        FileSaver.saveAs(
        //Blob 对象表示一个不可变、原始数据的类文件对象。
        //Blob 表示的不一定是JavaScript原生格式的数据。
        //File 接口基于Blob，继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
        //返回一个新创建的 Blob 对象，其内容由参数中给定的数组串联组成。
        new Blob([wbout], {
            type: 'application/octet-stream',
        }),
        //设置导出文件名称
        fileName
        );
    } catch (e) {
        if (typeof console !== 'undefined') console.log(e, wbout);
    }

    return wbout;
}


